home *** CD-ROM | disk | FTP | other *** search
- #ifndef _H_RPMFC_
- #define _H_RPMFC_
-
- #undef FILE_RCSID
- #include "magic.h"
-
- /*@-exportlocal@*/
- /*@unchecked@*/
- extern int _rpmfc_debug;
- /*@=exportlocal@*/
-
- /**
- */
- typedef /*@abstract@*/ struct rpmfc_s * rpmfc;
-
- /**
- */
- struct rpmfc_s {
- int nfiles; /*!< no. of files */
- int fknown; /*!< no. of classified files */
- int fwhite; /*!< no. of "white" files */
- int ix; /*!< current file index */
- int skipProv; /*!< Don't auto-generate Provides:? */
- int skipReq; /*!< Don't auto-generate Requires:? */
- int tracked; /*!< Versioned Provides: tracking dependency added? */
- size_t brlen; /*!< strlen(spec->buildRoot) */
-
- ARGV_t fn; /*!< (#files) file names */
- ARGI_t fcolor; /*!< (#files) file colors */
- ARGI_t fcdictx; /*!< (#files) file class dictionary indices */
- ARGI_t fddictx; /*!< (#files) file depends dictionary start */
- ARGI_t fddictn; /*!< (#files) file depends dictionary no. entries */
- ARGV_t cdict; /*!< (#classes) file class dictionary */
- ARGV_t ddict; /*!< (#dependencies) file depends dictionary */
- ARGI_t ddictx; /*!< (#dependencies) file->dependency mapping */
-
- /*@relnull@*/
- rpmds provides; /*!< (#provides) package provides */
- /*@relnull@*/
- rpmds requires; /*!< (#requires) package requires */
-
- StringBuf sb_java; /*!< concatenated list of java colored files. */
- StringBuf sb_perl; /*!< concatenated list of perl colored files. */
- StringBuf sb_python;/*!< concatenated list of python colored files. */
-
- };
-
- /**
- */
- enum FCOLOR_e {
- RPMFC_BLACK = 0,
- RPMFC_ELF32 = (1 << 0),
- RPMFC_ELF64 = (1 << 1),
- #define RPMFC_ELF (RPMFC_ELF32|RPMFC_ELF64)
-
- RPMFC_MODULE = (1 << 7),
- RPMFC_EXECUTABLE = (1 << 8),
- RPMFC_SCRIPT = (1 << 9),
- RPMFC_TEXT = (1 << 10),
- RPMFC_DATA = (1 << 11), /* XXX unused */
- RPMFC_DOCUMENT = (1 << 12),
- RPMFC_STATIC = (1 << 13),
- RPMFC_NOTSTRIPPED = (1 << 14),
- RPMFC_COMPRESSED = (1 << 15),
-
- RPMFC_DIRECTORY = (1 << 16),
- RPMFC_SYMLINK = (1 << 17),
- RPMFC_DEVICE = (1 << 18),
- RPMFC_LIBRARY = (1 << 19),
- RPMFC_ARCHIVE = (1 << 20),
- RPMFC_FONT = (1 << 21),
- RPMFC_IMAGE = (1 << 22),
- RPMFC_MANPAGE = (1 << 23),
-
- RPMFC_PERL = (1 << 24),
- RPMFC_JAVA = (1 << 25),
- RPMFC_PYTHON = (1 << 26),
- RPMFC_PHP = (1 << 27),
- RPMFC_TCL = (1 << 28),
- RPMFC_MONO = (1 << 6),
-
- RPMFC_WHITE = (1 << 29),
- RPMFC_INCLUDE = (1 << 30),
- RPMFC_ERROR = (1 << 31)
- };
- typedef enum FCOLOR_e FCOLOR_t;
-
- /**
- */
- struct rpmfcTokens_s {
- /*@observer@*/
- const char * token;
- int colors;
- };
-
- /**
- */
- typedef struct rpmfcTokens_s * rpmfcToken;
-
- #ifdef __cplusplus
- extern "C" {
- #endif
-
- /**
- * Return helper output.
- * @param av helper argv (with possible macros)
- * @param sb_stdin helper input
- * @retval *sb_stdoutp helper output
- * @param failnonzero IS non-zero helper exit status a failure?
- */
- int rpmfcExec(ARGV_t av, StringBuf sb_stdin, /*@out@*/ StringBuf * sb_stdoutp,
- int failnonzero)
- /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
- /*@modifies *sb_stdoutp, rpmGlobalMacroContext,
- fileSystem, internalState @*/
- /*@requires maxSet(sb_stdoutp) >= 0 @*/;
-
- /**
- * Return file color given file(1) string.
- * @param fmstr file(1) string
- * @return file color
- */
- /*@-exportlocal@*/
- int rpmfcColoring(const char * fmstr)
- /*@*/;
- /*@=exportlocal@*/
-
- /**
- * Print results of file classification.
- * @todo Remove debugging routine.
- * @param msg message prefix (NULL for none)
- * @param fc file classifier
- * @param fp output file handle (NULL for stderr)
- */
- /*@-exportlocal@*/
- void rpmfcPrint(/*@null@*/ const char * msg, rpmfc fc, /*@null@*/ FILE * fp)
- /*@globals fileSystem @*/
- /*@modifies *fp, fc, fileSystem @*/;
- /*@=exportlocal@*/
-
- /**
- * Destroy a file classifier.
- * @param fc file classifier
- * @return NULL always
- */
- /*@-exportlocal@*/
- /*@null@*/
- rpmfc rpmfcFree(/*@only@*/ /*@null@*/ rpmfc fc)
- /*@modifies fc @*/;
- /*@=exportlocal@*/
-
- /**
- * Create a file classifier.
- * @return new file classifier
- */
- /*@-exportlocal@*/
- rpmfc rpmfcNew(void)
- /*@*/;
- /*@=exportlocal@*/
-
- /**
- * Build file class dictionary and mappings.
- * @param fc file classifier
- * @param argv files to classify
- * @param fmode files mode_t array (or NULL)
- * @return 0 on success
- */
- /*@-exportlocal@*/
- int rpmfcClassify(rpmfc fc, ARGV_t argv, /*@null@*/ int16_t * fmode)
- /*@globals fileSystem, internalState @*/
- /*@modifies fc, fileSystem, internalState @*/;
- /*@=exportlocal@*/
-
- /**
- * Build file/package dependency dictionary and mappings.
- * @param fc file classifier
- * @return 0 on success
- */
- /*@-exportlocal@*/
- int rpmfcApply(rpmfc fc)
- /*@modifies fc @*/;
- /*@=exportlocal@*/
-
- /**
- * Generate package dependencies.
- * @param spec spec file control
- * @param pkg package control
- * @return 0 on success
- */
- int rpmfcGenerateDepends(const Spec spec, Package pkg)
- /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
- /*@modifies pkg->cpioList, pkg->header,
- rpmGlobalMacroContext, fileSystem, internalState @*/;
-
- #ifdef __cplusplus
- }
- #endif
-
- #endif /* _H_RPMFC_ */
-